/** @type {import('vite').UserConfig} */
// https://vitejs.dev/config/

import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
import { resolve } from "path";
import UnoCSS from "unocss/vite";
// 用于包分析
import { visualizer } from "rollup-plugin-visualizer";
// 压缩文件：gzip(.gz)和brtli(.br)
import viteCompression from "vite-plugin-compression";

// params = {mode: development | ... , command: ...,isSsrBuild: boolean, isPreview: false}
export default defineConfig(({ mode }) => {
  const envConfig = loadEnv(mode, process.cwd());

  console.log("visualizer", visualizer);
  return {
    plugins: [
      vue(),
      UnoCSS(),
      // 插件顺序：
      // 1. 框架类，如vue,unocss
      // 2. 转换类，如：，babel，TypeScript
      // 2. 打包分析输出类，如：压缩
      // 3. 其他，如：热更新、HTML处理
      // visualizer({
      //   open: true, // 打包完成后自动打开报告
      //   gzipSize: true, // 显示 gzip 压缩后的大小
      //   brotliSize: true, // 显示 brotli 压缩后的大小
      // }),

      // // 需要服务器nginx安装和配置支持 .br 压缩格式
      // viteCompression({
      //   // 如果要同时生产2种压缩文件，就写两个 viteCompression()
      //   // algorithm: 'gzip',
      //   // ext: '.gz',
      //   algorithm: "brotliCompress",
      //   ext: ".br",
      //   threshold: 10240,
      //   // 是否删除源文件（未压缩文件）,根据面向客户选择吧
      //   deleteOriginFile: true,
      // }),
    ],
    resolve: {
      alias: {
        "@": resolve(__dirname, "src"),
        "@package": resolve(__dirname, "src/modules/package"),
      },
    },

    server: {
      // open: true,
      port: 9990,
      proxy: {
        "/web": {
          target: envConfig["VITE_APP_HOST_PROXY"],
          // target: "https://3qod1bkzyvas.ngrok.xiaomiqiu123.top",
          changeOrigin: true,
        },
        "/openapi": {
          target: envConfig["VITE_APP_COMMON_PROXY"],
          // target: "https://3qod1bkzyvas.ngrok.xiaomiqiu123.top",
          changeOrigin: true,
        },

        "/eatnival": {
          target: envConfig["VITE_APP_IMAGE_PROXY"],
          changeOrigin: true,
        },
      },
    },

    css: {
      // preprocessorOptions: {
      //   less: {
      //     math: "parens-division",
      //   },
      // },
    },

    build: {
      outDir: `dist/${mode}`,

      rollupOptions: {
        output: {
          manualChunks: {
            baseBoundle: ["vue", "vue-router", "pinia"],
            lodash: ["lodash-es"],
            elementIcon: ["@element-plus/icons-vue"],
          },
        },
      },
    }
  };
});
